In computing, a file system is a mechanism for organizing and storing files to make it easy to later find and access them. File systems are typically organized as a hierarchical structure of directories and files in which each directory may contain one or more files and/or underlying directories. A root directory is usually the first or top most directory in a hierarchy. It can be likened to the root of a tree—the starting point where all branches originate.
A directory's location or a file's location in the file system hierarchy can be represented by a file system pathname (hereinafter path). Paths typically consist of a string of characters that name directories or files, separated by delimiting characters, most commonly the slash or the backslash. For example, the path “C:\patents\application.doc” identifies a file named “application.doc” that is stored in a directory named “patents” on the root director of a disk drive represented by “C:.” The root directory is represented by the first backslash “\,” and the colon “:” is used to determine the mount point/drive.
A path can be either absolute or relative. An absolute path is usually written with reference to a root directory. A relative path is usually written relative to the current working directory, so the absolute path need not be given. The present invention will be described with reference to absolute paths, it being understood the present invention should not be limited thereto. Many different formats exist for defining paths of files or directories, depending on the file system used. The present invention will be described with reference to the Microsoft Windows style of defining paths, it being understood that paths should not be limited thereto. The path “C:\patents\application.doc” noted above is an example of a Windows style path.
A file system is typically managed by software (hereinafter referred to as a file system manager), which is often a part of an operating system. Traditional file system managers offer facilities to create, open, move, rename, delete, etc., both files and directories. The most familiar file systems make use of one or more data storage devices (e.g., disk drives) that offer access to an array of fixed sized blocks of physical memory, generally a power of two in size (512 bytes are common). The file system manager is often responsible for organizing blocks of physical memory into files and directories. File system managers usually employ mechanisms (e.g., file allocation tables (FATs)) of some sort for keeping track of which blocks of physical memory belong to which files and which blocks of physical memory are not being used.
Bookkeeping information (i.e., metadata) is typically associated with each file within a file system. The length of the data contained in a file may be stored as a number of physical memory blocks allocated for the file or as an exact byte count. The time the data file was first created may be stored as the file's creation time stamp. The time the data file was last modified may be stored as the file's modification time stamp. The time that the file's metadata was last changed may also be stored as metadata. Other metadata may include the file's device type (e.g., block, character, socket, subdirectory, etc.), its owner user-ID and/or group-ID, the ID of author who first created the data of the file or the file itself, and file access permission settings (e.g., whether the file is read-only, executable, etc.). As an aside, an executable file, in computer science, is a file whose contents are meant to be interpreted as a program by a computer. Most executable files contain the binary representation of machine instructions of a specific process. Some operating systems designate executable files by a specific naming convention, such as ending a filename with the extension .bin or .exe. The present invention will be described with reference to files that store data, not executable instructions, it being understood that the present invention should not be limited thereto. For the purposes of explanation, file metadata (e.g., length of file, modification time stamp, creation time stamp, etc.) will be considered external information or information that is separate from its file.
A file system is usually an integral part of any modern operating system. An interface is usually provided by the operating system between a user and the file system. This interface can be textual or graphical, such as provided by a graphical user interface (GUI), such as file browsers. File browsers are useful for speeding up user interaction with files. When displayed in the browser GUI, the files are typically shown in a graphical representation of the hierarchy.